home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / basic / ace24dist.lha / ace24.lha / SUBmods / Complex / complex.b next >
Text File  |  1996-09-10  |  1KB  |  64 lines

  1. {*
  2. ** Complex Number Mathematics Subprogram Library.
  3. ** Author: Rich Allen [rico@wsnet.com, rico@larry.cdsar.af.mil]
  4. *}
  5.  
  6. STRUCT Complex
  7.   SINGLE real
  8.   SINGLE imag
  9. END STRUCT
  10.  
  11. SUB ADDRESS AddComp (ADDRESS xaddr, ADDRESS yaddr, ADDRESS zaddr) EXTERNAL
  12. DECLARE STRUCT Complex *x, *y, *z
  13.  
  14.   x = xaddr : y = yaddr : z = zaddr
  15.  
  16.   z->real = x->real + y->real
  17.   z->imag = x->imag + y->imag
  18.  
  19.   AddComp = z
  20. END SUB
  21.  
  22. SUB ADDRESS SubComp (ADDRESS xaddr, ADDRESS yaddr, ADDRESS zaddr) EXTERNAL
  23. DECLARE STRUCT Complex *x, *y, *z
  24.  
  25.   x = xaddr : y = yaddr : z = zaddr
  26.  
  27.   z->real = x->real - y->real
  28.   z->imag = x->imag - y->imag
  29.  
  30.   SubComp = z
  31. END SUB
  32.  
  33. SUB ADDRESS MulComp (ADDRESS xaddr, ADDRESS yaddr, ADDRESS zaddr) EXTERNAL
  34. DECLARE STRUCT Complex *x, *y, *z
  35.  
  36.   x = xaddr : y = yaddr : z = zaddr
  37.  
  38.   z->real = (x->real*y->real) - (x->imag*y->imag)
  39.   z->imag = (x->real*y->imag) + (x->imag*y->real)
  40.  
  41.   MulComp = z
  42. END SUB
  43.  
  44. SUB ADDRESS DivComp (ADDRESS xaddr, ADDRESS yaddr, ADDRESS zaddr) EXTERNAL
  45. DECLARE STRUCT Complex *x, *y, *z
  46.  
  47.   x = xaddr : y = yaddr : z = zaddr
  48.  
  49.   z->real = (x->real*y->real) + (x->imag*y->imag)
  50.   z->imag = (x->imag*y->real) - (x->real*y->imag)
  51.  
  52.   denom!  = (y->real*y->real) + (y->imag*y->imag)
  53.  
  54.   if denom! = 0 then
  55.     z->real = 0
  56.     z->imag = 0
  57.   else
  58.     z->real = z->real / denom!
  59.     z->imag = z->imag / denom!
  60.   end if
  61.  
  62.   DivComp = z
  63. END SUB
  64.